package com.hifar.test.task.service;


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hifar.test.entrust.pojo.HfEnvGkEntrust;
import com.hifar.test.task.pojo.HfEnvTask;
import com.hifar.test.task.pojo.VO.*;
import com.hifar.test.test.pojo.HfEnvTest;
import com.hifar.test.test.pojo.VO.HfEnvEntrustTaskVO;

import java.util.List;

/**
 * <p>
 * 委托项目 服务类
 * </p>
 *
 * @author wei
 * @since 2024-12-04 15:51:56
 */
public interface IHfEnvTaskService extends IService<HfEnvTask> {

    /**
     * 查询任务详情
     *
     * @param id
     * @return
     */
    HfEnvTaskVO queryVoById(String id);

    /**
     * 查询委托单下试验任务
     *
     * @param entrustId
     * @return
     */
    List<HfEnvTask> listByEntrustId(String entrustId);

    /**
     * 委托工控委托下任务列表
     * @param gkEntrustId
     * @return
     */
    List<HfEnvTask> listByGkEntrustId(String gkEntrustId);

    /**
     * 取消任务
     *
     * @param taskCancelVO
     */
    void cancel(HfEnvTaskCancelSaveVO taskCancelVO);

    /**
     * 新增试验-分配设备
     * @param addTestVO
     */
    void addTest(AddTestVO addTestVO);

    /**
     * 试验任务匹配设备列表
     *
     * @param matchEquipQueryVO
     * @return
     */
    TaskMatchAndNumDTO taskMatchEquipList(TaskMatchEquipQueryVO matchEquipQueryVO);

    /**
     * 任务规划 -委托列表
     *
     * @param queryWrapper 查询条件
     * @return
     */
    List<TaskPendingEntrustVO> listPendingEntrust(QueryWrapper<HfEnvGkEntrust> queryWrapper);

    /**
     * 任务规划 列表查询
     *
     * @param page         分页参数
     * @param queryWrapper 查询条件
     * @return
     */
    Page<HfEnvTaskVO> pageVO(Page<HfEnvTask> page, QueryWrapper<HfEnvTask> queryWrapper);

    /**
     * 查询任务下试验
     *
     * @param page
     * @param queryWrapper
     * @return
     */
    Page<HfEnvTaskTestVO> pageTest(Page<HfEnvTest> page, QueryWrapper<HfEnvTest> queryWrapper);


    /**
     * 更新任务状态
     * @param testId    试验id
     */
    void refreshTaskStatus(String testId);

    /**
     * 根据工控委托id 设置委托id
     * @param gkEntrustId   工控委托id
     * @param entrustId     委托id
     */
    void updateEntrustId(String gkEntrustId, String entrustId);

    /**
     * 报告生成 选择任务列表
     *
     * @param entrustId
     * @return
     */
    List<HfEnvTask> reportListTaskByEntrustId(String entrustId);

    /**
     * 报告生成 选择任务列表
     *
     * @param gkEntrustId 工控委托id
     * @return
     */
    List<HfEnvTask> reportListTaskByGkEntrustId(String gkEntrustId);

    /**
     * 试验总览
     *
     * @param equipTestBoardQueryVO 试验总览查询条件
     * @return
     */
    TaskMatchAndNumDTO equipTestBoardList(EquipTestBoardQueryVO equipTestBoardQueryVO);

    /**
     * 查询任务取消详情
     *
     * @param id 任务id
     * @return
     */
    HfEnvTaskCancelVO queryCancelById(String id);

    /**
     * 查询委托下任务详情
     *
     * @param id 委托id
     * @return
     */
    List<HfEnvEntrustTaskVO> listVoByEntrustId(String id);

    /**
     * 删除委托单任务
     *
     * @param id 任务id
     */
    void deleteById(String id);

    /**
     * 查询委托下任务列表
     *
     * @param gkEntrustId 工控委托id
     * @return
     */
    List<HfEnvTask> listTaskByGkEntrustId(String gkEntrustId);
    /**
     * 根据工控委托单删除数据
     *
     * @param gkEntrustId
     */
    void removeByGkEntrustId(String gkEntrustId);

    /**
     * 生成任务原始记录
     *
     * @param id 任务id
     */
    void generateProcessRecord(String id);

    /**
     * 上传任务原始记录附件
     *
     * @param id     任务id
     * @param fileId 附件id
     */
    void replaceTestReport(String id, String fileId);

    /**
     * 删除任务原始记录
     *
     * @param id 任务id
     */
    void delTestReport(String id);
}
